package com.sky.config;

import org.springframework.context.annotation.*;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * WebSocket配置类，用于注册WebSocket的Bean
 */
@Configuration
public class WebSocketConfiguration {

    @Bean
    @Conditional(NotTestEnvironmentCondition.class)
    //注册
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }


    // 自定义条件：判断当前是否为测试环境
    static class NotTestEnvironmentCondition implements Condition {
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
            // 检查是否包含 "test" 环境（Spring Boot 测试默认会添加该属性）
            String[] activeProfiles = context.getEnvironment().getActiveProfiles();
            for (String profile : activeProfiles) {
                if ("test".equals(profile)) {
                    return false; // 是测试环境，不创建 Bean
                }
            }
            // 额外检查：测试环境会自动添加 "spring.test.context" 属性，直接排除
            return context.getEnvironment().getProperty("spring.test.context") == null;
        }
    }

}
